using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using SMWJamecl.BusinessEntities;

namespace SMWJamecl.Repository.Mapping
{
    public class SeguroMap : EntityTypeConfiguration<Seguro>
    {
        public SeguroMap()
        {
            // Primary Key
            this.HasKey(t => t.Id_seguro);

            // Properties
            this.Property(t => t.Id_seguro)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(t => t.Placa)
                .IsFixedLength()
                .HasMaxLength(7);

            // Table & Column Mappings
            this.ToTable("Seguro");
            this.Property(t => t.Id_seguro).HasColumnName("Id_seguro");
            this.Property(t => t.Placa).HasColumnName("Placa");
            this.Property(t => t.Id_Tipo_Seguro).HasColumnName("Id_Tipo_Seguro");
            this.Property(t => t.fecha_compra).HasColumnName("fecha_compra");
            this.Property(t => t.fecha_vencimiento).HasColumnName("fecha_vencimiento");
            this.Property(t => t.Id_CompaniaSeguro).HasColumnName("Id_CompaniaSeguro");
            this.Property(t => t.DNI).HasColumnName("DNI");
            this.Property(t => t.costo).HasColumnName("costo");

            // Relationships
            this.HasOptional(t => t.CompaniaSeguro)
                .WithMany(t => t.Seguroes)
                .HasForeignKey(d => d.Id_CompaniaSeguro);
            this.HasOptional(t => t.Empleado)
                .WithMany(t => t.Seguroes)
                .HasForeignKey(d => d.DNI);
            this.HasOptional(t => t.TipoSeguro)
                .WithMany(t => t.Seguroes)
                .HasForeignKey(d => d.Id_Tipo_Seguro);
            this.HasOptional(t => t.Vehiculo)
                .WithMany(t => t.Seguroes)
                .HasForeignKey(d => d.Placa);

        }
    }
}
